﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace PurchaseManager
{
    public class Product
    {
        public Product()
        {
        }

        public bool Compare(Product compareItem)
        {
            // Image는 제외한다.
            if (compareItem.CodeName == this.CodeName && compareItem.CompanyId == this.CompanyId && compareItem.CategoryId == this.CategoryId
                && compareItem.ItemName == this.ItemName && compareItem.CompanyItemName == this.CompanyItemName && compareItem.ParentId == this.ParentId
                && compareItem.HasChild == this.HasChild && compareItem.Option1 == this.Option1 && compareItem.Option2 == this.Option2 && compareItem.Option3 == this.Option3
                && compareItem.PrimeCost == this.PrimeCost && compareItem.SellCost == this.SellCost
                && compareItem.Memo == this.Memo && compareItem.Status == this.Status)
                return true;

            return false;
        }

        // In DB
        public int Id { get; set; }                 // 상품 아이디(Unique Value)
        public string CodeName { get; set; }        // 코드 이름(접두어는 Category에 따라서 구분), (Unique Value)
        public int CompanyId { get; set; }          // 사입처 ID
        public int CategoryId { get; set; }         // 구준 ID
        public string ItemName { get; set; }            // Natalie 상품명
        public string CompanyItemName { get; set; }     // 사입처 상품명
        public int ParentId { get; set; }           // 부모 ID(옵션 등의 차이로 인한 상품명 구분)
        public bool HasChild { get; set; }          // 자식 아이템이 있는지 여부, 자식아이템이 있는 경우 옵션으로 표시한다.
        public string Option1 { get; set; }         // 옵션1(색상, 사이즈, ... 등 구분)
        public string Option2 { get; set; }         // 옵션2(색상, 사이즈, ... 등 구분)
        public string Option3 { get; set; }         // 옵션3(색상, 사이즈, ... 등 구분)   // Reserved

        // 매입 원가
        private decimal primecost = 0;
        public decimal PrimeCost 
        {
            get
            {
                return primecost;
            }
            set
            {
                primecost = value;
                Surtax = (decimal)((double)primecost * 0.1);
            }
        }      
        public decimal SellCost { get; set; }       // 판매가(원가 + 부가세 등의 서비스 비용 포함)
        public string Memo { get; set; }            // 메모
        public string[] Image { get; set; }         // 물건 이미지
        public int Status { get; set; }             // 현재 물건 상태(품절...)

        // DB 외의 요소들(테이블 구성요소)
        public string CompanyName { get; set; }
        public string CategoryName { get; set; }
        public decimal Surtax { get; set; }         // 부가세 (원가의 10%)
        public decimal ExtraCost { get; set; }      // 기타 잡비
        public double BenefitRate { get; set; }     // 이익률
        public string StatusText { get; set; }      // 물건 상태 텍스트


    }
}
